
import Levenshtein

def edit_distance(str1, str2):
    """
    该函数使用 Levenshtein 距离算法计算两个字符串之间的相似度。
    
    :param str1: 用于比较的第一个字符串。
    :param str2: 参数“str2”是要与“str1”进行比较以计算它们相似度的第二个字符串。
    :return: 两个字符串之间的相似度。
    """
    # 计算两个字符串的编辑距离
    distance = Levenshtein.distance(str1, str2)
    # 计算字符串相似度
    similarity = 1 - distance / max(len(str1), len(str2))
    return similarity

def cos_similarity(str1, str2):
    """
    函数“cos_similarity”通过使用 scikit-learn 库中的 CountVectorizer 和 cos_similarity
    函数将两个字符串转换为向量来计算两个字符串之间的余弦相似度。
    
    :param str1: 用于比较的第一个字符串。
    :param str2: 参数“str2”是一个字符串，表示要与“str1”表示的第一个文档进行比较的第二个文档或文本。
    :return: 两个字符串之间的余弦相似度。
    """
    # 将两个字符串组成一个列表
    documents = [str1, str2]
    # 创建一个CountVectorizer对象
    count_vectorizer = CountVectorizer()
    # 使用CountVectorizer对象将文本转换为向量
    sparse_matrix = count_vectorizer.fit_transform(documents)
    # 计算两个向量的余弦相似度
    cosine_sim = cosine_similarity(sparse_matrix[0:1], sparse_matrix[1:2])
    return cosine_sim[0][0]

